home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Scene Storm
/
Scene Storm - Volume 1.iso
/
coding
/
asm
/
demos
/
xmasdemo
/
x-mas.s
< prev
next >
Wrap
Text File
|
1980-01-03
|
6KB
|
313 lines
** X-MAS SURPRICE
** CODE AND GRAPHICS BY CRADON/MATRIX (ASM-ONE FORMAT)
*******************************************************************************
SECTION A,CODE_C
START MOVEM.L D0-A6,-(A7)
MOVE.W $DFF01C,INTENA
MOVE.W $DFF002,DMACON
MOVE.W $DFF010,ADKCON
MOVE.W #%0111111111111111,$DFF096
MOVE.W #%0111111111111111,$DFF09A
MOVE.W #%0111111111111111,$DFF09C
JSR FIELDS
MOVE.L $6C,OLDIRQ
MOVE.L #MYIRQ,$6C
MOVE.W #%1000001111000000,$DFF096
MOVE.W #%1100000000100000,$DFF09A
LOOP BTST #6,$BFE001
BNE.B LOOP
ENDE MOVE.W #%0111111111111111,$DFF096
MOVE.W #%0111111111111111,$DFF09A
MOVE.W #%0111111111111111,$DFF09C
MOVE.L OLDIRQ,$00006C
MOVE.W DMACON,D0
OR.W #$8000,D0
MOVE.W D0,$DFF096
MOVE.W ADKCON,D0
OR.W #$8000,D0
MOVE.W D0,$DFF09E
MOVE.W INTENA,D0
OR.W #$C000,D0
MOVE.W #$7FFF,$DFF09C
MOVE.W D0,$DFF09A
CLR.W $DFF088
MOVEM.L (A7)+,D0-A6
RTS
** DUAL PLAYFIELDS ************************************************************
FIELDS LEA FLD1,A0
MOVE.L #SCREEN,D0
MOVE.L #3,D1
LOOP1 MOVE.W D0,6(A0)
SWAP D0
MOVE.W D0,2(A0)
SWAP D0
ADD.L #10240,D0
ADD.L #8,A0
SUBQ.L #1,D1
BNE.S LOOP1
LEA FLD2,A0
MOVE.L #SCREEN2,D0
MOVE.W D0,6(A0)
SWAP D0
MOVE.W D0,2(A0)
SWAP D0
RTS
** A SMALL 3D STARFIELD RUTINE ************************************************
FIELD BTST #14,$DFF002
BNE.S FIELD
MOVE.W #$0100,$DFF040
MOVE.L #$FFFFFFFF,$DFF044
MOVE.L SCREEN_ADRESS(PC),$DFF054
CLR.W $DFF066
CLR.W $DFF042
MOVE.W #[512*64+320/16],$DFF058
LEA.L POINTS(PC),A1
PLTLOOP CMP.W #$FFFF,(A1)
BEQ.W PLOTOUT
MOVE.W (A1),D0
MOVE.W 2(A1),D1
MOVE.W 4(A1),D2
ADD.W XDELTA,D0
ADD.W YDELTA,D1
ADD.W ZDELTA,D2
BORDER CMP.W #319,D0
BLE.B .XHI_OK
SUB.W #319,D0
.XHI_OK CMP.W #0,D0
BHI.B .XLO_OK
ADD.W #319,D0
.XLO_OK CMP.W #250,D1
BLE.B .YLO_OK
SUB.W #250,D1
.YLO_OK CMP.W #0,D1
BGE.B .YHI_OK
ADD.W #250,D1
.YHI_OK CMP.W #50,D2
BHI.B .ZFR_OK
ADD.W #69,D2
.ZFR_OK CMP.W #120,D2
BLS.B .ZBK_OK
SUB.W #69,D2
.ZBK_OK MOVE.W D0,(A1)
MOVE.W D1,2(A1)
MOVE.W D2,4(A1)
SUB.W XCENTER,D0
SUB.W YCENTER,D1
MULS ZOOM,D0
MULS ZOOM,D1
DIVS D2,D0
DIVS D2,D1
ADD.W XCENTER,D0
ADD.W YCENTER,D1
MOVE.L SCREEN_ADRESS(PC),A0
MOVE.W #256,D3
SUBI.W D1,D3
MULU.W #40,D3
ADD.L D3,A0
CMP.W #16,D0
BLT.B .XREST
MOVE.W D0,D1
LSR.W #4,D1
LSL.W #4,D1
SUB.W D1,D0
LSR.W #3,D1
ADD.W D1,A0
.XREST MOVE.W #$8000,D1
ROR.W D0,D1
.WAIT BTST #14,$DFF002
BNE.S .WAIT
CMP.W #100,D2
BHI.B DARK1
CMP.W #70,D2
BHI.B DARK2
LIGHT ORI.W D1,(A0)
BRA.S PLOTFIN
DARK1 ADDI.L #[256*40],A0
ORI.W D1,(A0)
BRA.S PLOTFIN
DARK2 ORI.W D1,(A0)
ADDI.L #[256*40],A0
ORI.W D1,(A0)
PLOTFIN ADDQ.L #6,A1
JMP PLTLOOP
PLOTOUT RTS
** FLIP BETWEEN FRAMESBUFFERS *************************************************
FLIP_SCREEN
CMP.L #SCREEN1,SCREEN_ADRESS
BEQ.S FLIP_TO_SCREEN2
LEA.L FLD2,A0
MOVE.L #SCREEN2,D0
MOVE.W D0,6(A0)
SWAP D0
MOVE.W D0,2(A0)
MOVE.L #SCREEN2+[256*40],D0
MOVE.W D0,14(A0)
SWAP D0
MOVE.W D0,10(A0)
MOVE.L #SCREEN1,SCREEN_ADRESS
RTS
FLIP_TO_SCREEN2
LEA.L FLD2,A0
MOVE.L #SCREEN1,D0
MOVE.W D0,6(A0)
SWAP D0
MOVE.W D0,2(A0)
MOVE.L #SCREEN1+[256*40],D0
MOVE.W D0,14(A0)
SWAP D0
MOVE.W D0,10(A0)
MOVE.L #SCREEN2,SCREEN_ADRESS
RTS
** THIRD LEVEL INTERRUPT ******************************************************
MYIRQ MOVEM.L D0-A6,-(A7)
MOVE.W $DFF01E,D0
BTST #5,D0
BNE.B RESTART
MOVE.W D0,$DFF09C
MOVEM.L (A7)+,D0-A6
RTE
RESTART MOVE.L #COPPER,$DFF084
MOVE.B #$00,$DFF08A
JSR FIELD
JSR FLIP_SCREEN
MOVE.W #$20,$DFF09C
MOVEM.L (A7)+,D0-A6
RTE
** DATA ***********************************************************************
XDELTA DC.W 0
YDELTA DC.W -1
ZDELTA DC.W 0
OLDIRQ DC.L 0
INTENA DC.W 0
DMACON DC.W 0
ADKCON DC.W 0
SCREEN_ADRESS
DC.L SCREEN1
XCENTER DC.W 159
YCENTER DC.W 128
ZOOM DC.W 50
POINTS DC.W 1,1,50
DC.W 319,2,63
DC.W 20,249,76
DC.W 200,180,88
DC.W 316,171,91 ; 5
DC.W 159,70,54
DC.W 65,23,66
DC.W 66,190,79
DC.W 188,101,81
DC.W 35,135,94 ; 10
DC.W 269,221,56
DC.W 176,167,69
DC.W 44,96,71
DC.W 312,120,84
DC.W 149,49,96 ; 15
DC.W 99,120,59
DC.W 17,160,62
DC.W 165,181,74
DC.W 143,163,87
DC.W 319,3,59 ; 20
DC.W 205,128,62
DC.W 142,129,65
DC.W 255,179,68
DC.W 37,70,71
DC.W 12,244,74 ; 25
DC.W 66,138,77
DC.W 166,33,80
DC.W 319,145,83
DC.W 167,100,86
DC.W 279,21,89 ; 30
DC.W 55,40,92
DC.W 1,67,95
DC.W 240,250,98
DC.W 50,3,50
DC.W 2,30,63 ; 45
DC.W 80,200,75
DC.W 191,1,88
DC.W 85,66,91
DC.W 240,231,53
DC.W 200,20,65 ; 50
DC.W 132,240,78
DC.W 170,185,51
DC.W 36,101,54
DC.W 3,1,56
DC.W 312,158,58 ; 60
DC.W 150,76,61
DC.W 278,9,63
DC.W 300,40,66
DC.W 55,110,69
DC.W 40,110,72 ; 65
DC.W 1,128,75
DC.W 30,240,78
DC.W 100,3,81
DC.W 180,109,84
DC.W 240,20,87 ; 70
DC.W 319,4,90
DC.W 11,169,93
DC.W 2,30,96
DC.W 1,1,99
DC.W 30,190,101 ; 85
DC.W 50,249,103
DC.W 316,249,106
DC.W 167,115,109
DC.W 40,100,111
DC.W 179,99,115 ; 90
DC.W $FFFF ; END SIGNAL
** COPPERLIST *****************************************************************
SECTION B,DATA_C
COPPER DC.W $0106,$0000,$01FC,$0000
DC.W $008E,$2C81,$0090,$2CC1
DC.W $0092,$0038,$0094,$00D0
DC.W $0102,$0000,$0104,%0000000001000000
DC.W $0108,$0000,$010A,$0000
DC.W $0120,$0000,$0122,$0000
COLOUR DC.W $0180,$0000,$0182,$0FFF
DC.W $0184,$0CDE,$0186,$09BD
DC.W $0188,$069C,$018A,$047B
DC.W $018C,$025A,$018E,$0049
DC.W $0190,$0000,$0192,$0FFF
DC.W $0194,$0444,$0196,$0999
DC.W $0198,$0500,$019A,$0400
DC.W $019C,$0300,$019E,$0200
; DUAL PLAYFIELD
FLD1: DC.W $00E0,$0000,$00E2,$0000 ;1
DC.W $00E8,$0000,$00EA,$0000 ;3
DC.W $00F0,$0000,$00F2,$0000 ;5
FLD2: DC.W $00E4,$0000,$00E6,$0000 ;2
DC.W $00EC,$0000,$00EE,$0000 ;4
DC.W $00F4,$0000,$00F6,$0000 ;6
DC.W $3001,$FF00;,$0100,$2200
DC.W $3011,$FFFE,$0100,%0101010000000000
DC.W $FFE1,$FFFE,$2901,$FF00
DC.W $0100,$0200,$FFFF,$FFFE
** SCREEN *********************************************************************
SCREEN1 BLK.B 20512,$00
SCREEN2 BLK.B 20512,$00
SCREEN INCBIN "work:prog/SOURCE3/MOONSCAPE.BIT"